package org.Yiran.timetale_re.item.tool.screwdriver.modules.items.attribute;

import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import org.Yiran.timetale_re.item.tool.screwdriver.core.ScrewdriverModuleItem;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.enmu.ModuleCategory;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.enmu.ModuleType;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.type.AttackModule;
import org.jetbrains.annotations.NotNull;

/**
 * 中级攻击模块物品类
 * <p>
 * 该类实现了中级攻击模块，当安装到时英起子上时，
 * 可以提供12点攻击伤害。
 * </p>
 */
public class AdvancedAttackModuleItem extends ScrewdriverModuleItem implements AttackModule {
    
    // ==============================
    // 构造方法
    // ==============================

    /**
     * 中级攻击模块物品构造函数
     * <p>
     * 创建一个中级攻击模块物品实例。
     * </p>
     */
    public AdvancedAttackModuleItem() {
        super(
                ModuleLevel.ADVANCED,
                "tiername.level.professional"
        );
    }
    
    // ==============================
    // 物品属性方法
    // ==============================

    @Override
    public float getAttackDamage() {
        return 12.0f;
    }
    
    /**
     * 获取物品显示名称
     * <p>
     * 返回该模块物品的显示名称。
     * </p>
     *
     * @param stack 物品栈
     * @return 显示名称
     */
    @Override
    public @NotNull Component getName(@NotNull ItemStack stack) {
        return Component.translatable("item.timetale_re.advanced_attack_module");
    }
    
    /**
     * 获取模块的唯一标识符
     *
     * @return 模块ID
     */
    @Override
    public String getModuleId() {
        return "advanced_attack_module";
    }
    
    /**
     * 获取模块的显示名称
     *
     * @return 模块名称
     */
    @Override
    public Component getDisplayName() {
        return Component.translatable("item.timetale_re.advanced_attack_module");
    }
    
    /**
     * 获取模块类型
     *
     * @return 模块类型
     */
    @Override
    public ModuleType getModuleType() {
        return ModuleType.ATTACK;
    }
    
    /**
     * 获取模块分类
     *
     * @return 模块分类
     */
    @Override
    public ModuleCategory getModuleCategory() {
        return ModuleCategory.ATTRIBUTE;
    }

    @Override
    public ScrewdriverModuleItem.ModuleLevel getModuleLevel() {
        return ScrewdriverModuleItem.ModuleLevel.ADVANCED;
    }
}